// app.js
App({
  globalData: {
    userInfo: null,
    token: null,
    isLogin: false,
    selectedBrand: null // 用于品牌选择页面传参
  },

  onLaunch: function () {
    console.log('小程序启动');
    
    // 检查登录状态
    this.checkLoginStatus();
    
    // 检查更新
    this.checkForUpdate();
  },

  onShow: function () {
    console.log('小程序显示');
  },

  onHide: function () {
    console.log('小程序隐藏');
  },

  // 检查登录状态
  checkLoginStatus: function() {
    try {
      var userInfo = wx.getStorageSync('userInfo');
      var token = wx.getStorageSync('token');
      var loginTime = wx.getStorageSync('loginTime');
      
      if (userInfo && token && loginTime) {
        // 检查登录是否过期（这里设置7天过期）
        var loginDate = new Date(loginTime);
        var now = new Date();
        var daysDiff = (now - loginDate) / (1000 * 60 * 60 * 24);
        
        if (daysDiff < 7) {
          console.log('用户已登录，登录状态有效');
          this.globalData.userInfo = userInfo;
          this.globalData.token = token;
          this.globalData.isLogin = true;
          
          // 对于已登录的用户，延迟检查公告
          setTimeout(() => {
            this.showAnnouncementPopup();
          }, 2000);
        } else {
          console.log('登录状态已过期');
          this.clearLoginData();
        }
      } else {
        console.log('用户未登录');
        this.globalData.isLogin = false;
      }
    } catch (error) {
      console.error('检查登录状态失败:', error);
      this.globalData.isLogin = false;
    }
  },

  // 设置用户登录信息
  setUserInfo: function(userInfo, token) {
    try {
      this.globalData.userInfo = userInfo;
      this.globalData.token = token;
      this.globalData.isLogin = true;
      
      // 同步到本地存储
      wx.setStorageSync('userInfo', userInfo);
      wx.setStorageSync('token', token);
      wx.setStorageSync('loginTime', new Date().toISOString());
      
      console.log('用户信息设置成功');
      
      // 登录成功后，延迟显示公告弹窗
      setTimeout(() => {
        this.showAnnouncementPopup();
      }, 1000);
      
    } catch (error) {
      console.error('设置用户信息失败:', error);
    }
  },

  // 清除登录数据
  clearLoginData: function() {
    try {
      this.globalData.userInfo = null;
      this.globalData.token = null;
      this.globalData.isLogin = false;
      
      // 清除本地存储
      wx.removeStorageSync('userInfo');
      wx.removeStorageSync('token');
      wx.removeStorageSync('loginTime');
      
      console.log('登录数据清除成功');
    } catch (error) {
      console.error('清除登录数据失败:', error);
    }
  },

  // 检查小程序更新
  checkForUpdate: function() {
    if (wx.canIUse('getUpdateManager')) {
      var updateManager = wx.getUpdateManager();
      
      updateManager.onCheckForUpdate(function (res) {
        console.log('检查更新结果:', res.hasUpdate);
      });
      
      updateManager.onUpdateReady(function () {
        wx.showModal({
          title: '更新提示',
          content: '新版本已经准备好，是否重启应用？',
          success: function (res) {
            if (res.confirm) {
              updateManager.applyUpdate();
            }
          }
        });
      });
      
      updateManager.onUpdateFailed(function () {
        console.error('新版本下载失败');
      });
    }
  },

  // 获取用户信息
  getUserInfo: function() {
    return this.globalData.userInfo;
  },

  // 获取token
  getToken: function() {
    return this.globalData.token;
  },

  // 检查是否已登录
  isLoggedIn: function() {
    return this.globalData.isLogin;
  },

  // 设置选中的品牌（用于页面间传参）
  setSelectedBrand: function(brandValue, brandName) {
    this.globalData.selectedBrand = {
      value: brandValue,
      name: brandName
    };
  },

  // 显示公告弹窗
  showAnnouncementPopup: function() {
    console.log('开始获取公告信息...');
    
    // 检查今天是否已经显示过公告
    const today = new Date().toDateString();
    const lastShownDate = wx.getStorageSync('announcementShownDate');
    
    if (lastShownDate === today) {
      console.log('今天已经显示过公告，跳过显示');
      return;
    }
    
    // 从API获取最新公告
    wx.request({
      url: 'http://localhost:6001/announcement/getLatest',
      method: 'GET',
      success: (res) => {
        console.log('公告API响应:', res.data);
        
        if (res.data && res.data.code === 200 && res.data.data) {
          const announcement = res.data.data;
          this.displayAnnouncementModal(announcement);
          
          // 记录今天已显示过公告
          wx.setStorageSync('announcementShownDate', today);
        } else if (res.data && res.data.code === 404) {
          console.log('暂无公告内容');
        } else {
          console.error('获取公告失败:', res.data);
        }
      },
      fail: (error) => {
        console.error('公告API请求失败:', error);
        // 可以显示一个默认的欢迎信息
        this.displayDefaultWelcome();
      }
    });
  },

  // 显示公告弹窗
  displayAnnouncementModal: function(announcement) {
    console.log('显示公告弹窗:', announcement);
    
    // 处理HTML标签，简单的去除HTML标签显示纯文本
    let content = announcement.content || '';
    content = content.replace(/<[^>]*>/g, ''); // 去除HTML标签
    content = content.replace(/&nbsp;/g, ' '); // 替换HTML空格
    content = content.replace(/&lt;/g, '<').replace(/&gt;/g, '>'); // 替换HTML实体
    
    // 限制内容长度，避免弹窗过长
    if (content.length > 200) {
      content = content.substring(0, 200) + '...';
    }
    
    wx.showModal({
      title: announcement.title || '系统公告',
      content: content,
      showCancel: true,
      cancelText: '关闭',
      confirmText: '知道了',
      success: (res) => {
        if (res.confirm) {
          console.log('用户确认查看公告');
        } else if (res.cancel) {
          console.log('用户关闭公告弹窗');
        }
      }
    });
  },

  // 显示默认欢迎信息（备用方案）
  displayDefaultWelcome: function() {
    wx.showModal({
      title: '欢迎使用',
      content: '欢迎使用二手车交易平台！我们为您提供优质的二手车买卖服务。',
      showCancel: false,
      confirmText: '开始使用',
      success: (res) => {
        console.log('显示默认欢迎信息');
      }
    });
  }
})
